home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PROGEDIT / H402.ZIP / ELV17SRC.ZIP / VARS.C < prev    next >
C/C++ Source or Header  |  1992-12-30  |  4KB  |  117 lines

  1. /* vars.c */
  2.  
  3. /* Author:
  4.  *    Steve Kirkendall
  5.  *    14407 SW Teal Blvd. #C
  6.  *    Beaverton, OR 97005
  7.  *    kirkenda@cs.pdx.edu
  8.  */
  9.  
  10.  
  11. /* This file contains variables which weren't happy anyplace else */
  12.  
  13. #include "config.h"
  14. #include "vi.h"
  15.  
  16. /*------------------------------------------------------------------------*/
  17.  
  18. /* used to remember whether the file has been modified */
  19. struct _viflags    viflags;
  20.  
  21. /* used to access the tmp file */
  22. long        lnum[MAXBLKS];
  23. long        nlines;
  24. int        tmpfd = -1;
  25. int        tmpnum;
  26. #ifndef CRUNCH
  27. int        wset = FALSE;
  28. #endif
  29.  
  30. /* used to keep track of the current file & alternate file */
  31. long        origtime;
  32. char        origname[256];
  33. char        prevorig[256];
  34. long        prevline = 1;
  35.  
  36. /* used to track various places in the text */
  37. MARK        mark[NMARKS];    /* marks 'a through 'z, plus mark '' */
  38. MARK        cursor;        /* the cursor position within the file */
  39.  
  40. /* which mode of the editor we're in */
  41. int        mode;        /* vi mode? ex mode? quitting? */
  42.  
  43. /* used to manage the args list */
  44. char        args[BLKSIZE];    /* list of filenames to edit */
  45. int        argno;        /* index of current file in args list */
  46. int        nargs;        /* number of filenames in args[] */
  47.  
  48. /* dummy var, never explicitly referenced */
  49. int        bavar;        /* used only in BeforeAfter macros */
  50.  
  51. /* used to detect changes that invalidate cached text/blocks */
  52. long        changes;    /* incremented when file is changed */
  53. int        significant;    /* boolean: was a *REAL* change made? */
  54. int        exitcode = 1;    /* 0=overwritten, 1=not updated, else error */
  55.  
  56. /* used to support the pfetch() macro */
  57. int        plen;        /* length of the line */
  58. long        pline;        /* line number that len refers to */
  59. long        pchgs;        /* "changes" level that len refers to */
  60. char        *ptext;        /* text of previous line, if valid */
  61.  
  62. /* misc temporary storage - mostly for strings */
  63. BLK        tmpblk;        /* a block used to accumulate changes */
  64.  
  65. /* screen oriented stuff */
  66. long        topline;    /* file line number of top line */
  67. int        leftcol;    /* column number of left col */
  68. int        physcol;    /* physical column number that cursor is on */
  69. int        physrow;    /* physical row number that cursor is on */
  70.  
  71. /* used to help minimize that "[Hit a key to continue]" message */
  72. int        exwrote;    /* Boolean: was the last ex command wordy? */
  73.  
  74. /* This variable affects the behaviour of certain functions -- most importantly
  75.  * the input function.
  76.  */
  77. int        doingdot;    /* boolean: are we doing the "." command? */
  78.  
  79. /* This variable affects the behaviour of the ":s" command, and it is also
  80.  * used to detect & prohibit nesting of ":g" commands
  81.  */
  82. int        doingglobal;    /* boolean: are doing a ":g" command? */
  83.  
  84. /* This variable is zeroed before a command executes, and later ORed with the
  85.  * command's flags after the command has been executed.  It is used to force
  86.  * certain flags to be TRUE for *some* invocations of a particular command.
  87.  * For example, "/regexp/+offset" forces the LNMD flag, and sometimes a "p"
  88.  * or "P" command will force FRNT.
  89.  */
  90. int        force_flags;
  91.  
  92. /* These are used for reporting multi-line changes to the user */
  93. long        rptlines;    /* number of lines affected by a command */
  94. char        *rptlabel;    /* description of how lines were affected */
  95.  
  96. /* These store info that pertains to the shift-U command */
  97. long    U_line;            /* line# of the undoable line, or 0l for none */
  98. char    U_text[BLKSIZE];    /* contents of the undoable line */
  99.  
  100.  
  101. #ifndef NO_VISIBLE
  102. /* These are used to implement the 'v' and 'V' commands */
  103. MARK    V_from;            /* starting point for v or V */
  104. int    V_linemd;        /* boolean: doing line-mode version? (V, not v) */
  105. #endif
  106.  
  107. /* Bigger stack req'ed for TOS and TURBOC */
  108.  
  109. #if TOS
  110. long    _stksize = 16384;
  111. #endif
  112.  
  113. #if TURBOC
  114. #include <dos.h>
  115. extern unsigned _stklen = 16384U;
  116. #endif
  117.